home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 4 / Apprentice-Release4.iso / Source Code / Libraries / DCLAP 4j / DBio / DSeqDoc.h < prev    next >
Encoding:
Text File  |  1995-12-17  |  9.0 KB  |  276 lines  |  [TEXT/R*ch]

  1. // DSeqDoc.h
  2. // d.g.gilbert, 1990-1994
  3.  
  4. #ifndef _DSEQDOC_
  5. #define _DSEQDOC_
  6.  
  7. #include "DSequence.h"
  8. #include "DSeqList.h"
  9. #include <DTableView.h>
  10. #include <DWindow.h>
  11. #include <DMethods.h>
  12. #include <DREnzyme.h>
  13.  
  14.  
  15. class DSeqDoc;
  16. class DPrompt;
  17. class DPopupList;
  18. class DCheckBox;
  19. class DMenu;
  20. class DAlnSequence;
  21. class DAlnSlider;
  22.  
  23.  
  24. class DAlnView : public DTableView  
  25. {
  26. public:
  27.     DSeqList    * fSeqList;  
  28.     DSeqDoc        *    fDoc;          
  29.     DAlnSequence * fEditSeq;  
  30.     short            fEditRow, fMaskLevel;
  31.     Boolean        fLocked, fOwnSeqlist;     
  32.     DAlnSlider    * fSlider;
  33.     DSequence        * fCurSeq; // temp used in draw, elsewhere?
  34.     enum { kindAlnView = 23345, idAlnView = 22902 };
  35.     enum viewmodes { kModeSlide,kModeEdit,kModeMask1,kModeMask2,kModeMask3,kModeMask4 };
  36.     
  37.     DAlnView( long id, DView* itsSuper, DSeqDoc* itsDocument, DSeqList* itsSeqList, long pixwidth, long pixheight);
  38.     virtual ~DAlnView();
  39.  
  40.     virtual DSequence* SeqAt( short aRow) 
  41.         {
  42.         if (fSeqList) return fSeqList->SeqAt(aRow);
  43.         else return NULL;
  44.         }
  45.  
  46.     virtual void Click(Nlm_PoinT mouse);
  47.     virtual void Drag(Nlm_PoinT mouse);
  48.     virtual void Hold(Nlm_PoinT mouse);
  49.     virtual void Release(Nlm_PoinT mouse);
  50.     virtual void DoubleClickAt(short row, short col);
  51.     virtual void SingleClickAt(short row, short col);
  52.     virtual DSequence* SelectedSequence(short& selectedRow);
  53.     virtual DSequence* SelectedSequence() { 
  54.         short selectedRow; return SelectedSequence(selectedRow);
  55.         }
  56.     virtual void Scroll(Boolean vertical, DView* scrollee, short newval, short oldval);
  57.  
  58.     virtual void UpdateWidth( DSequence* aSeq);
  59.     virtual void UpdateAllWidths(void);
  60.     virtual void UpdateSize(void);
  61.     
  62.     virtual void addToAlnList( DSequence* aSeq);
  63.     virtual void registerInsertLast( DSequence* aSeq);
  64.     virtual void MakeConsensus();
  65.     virtual char* FindCommonBases( short minCommonPerCent);
  66.     virtual void HiliteCommonBases();
  67.     virtual void HiliteORFs();
  68.     
  69.     virtual void DeInstallEditSeq();
  70.     virtual void InstallEditSeq(short row, short selStart, short selEnd, Boolean doLight);
  71.     virtual void SetTextLock( Boolean turnon);
  72.     virtual void SetViewMode( short viewmode);
  73.         
  74.     virtual void TrackMouse( short aTrackPhase,
  75.                     Nlm_PoinT& anchorPoint, Nlm_PoinT& previousPoint,
  76.                     Nlm_PoinT& nextPoint,    Nlm_Boolean mouseDidMove);
  77.     virtual void TrackFeedback( short aTrackPhase,
  78.                     const Nlm_PoinT& anchorPoint, const Nlm_PoinT& previousPoint,
  79.                     const Nlm_PoinT& nextPoint, Nlm_Boolean mouseDidMove, Nlm_Boolean turnItOn);
  80.  
  81.     virtual void Resize(DView* superview, Nlm_PoinT sizechange);
  82.     virtual void GetReadyToShow();
  83.     virtual void Show();
  84.     virtual void DrawAlnInStyle(baseColors colors, Boolean swapBackColor, 
  85.                                                             char*    pText, long indx, long len, short row);
  86.     virtual void DrawAlnColors(baseColors colors, Boolean swapBackColor, 
  87.                                                             char*    pText, long indx, long len, short row);
  88.     virtual void DrawNoColors(Nlm_RecT r, short row);
  89.     virtual void DrawAllColors(Nlm_RecT r, short row);
  90.     virtual void DrawRow(Nlm_RecT r, short row);
  91.     virtual void Draw();
  92.                 
  93.     //virtual Boolean ContainsClipType(ResType aType); // override 
  94.     //virtual void WriteToDeskScrap(void); // override 
  95.     
  96.     //virtual void DoMouseCommand(VPoint VAR theMouse, TToolboxEvent event, Point hysteresis); // override 
  97.     //virtual Boolean HandleMouseDown( VPoint theMouse, TToolboxEvent event, hysteresis: Point); // override 
  98. };
  99.  
  100.  
  101. class DAlnITitle : public DTableView
  102. {
  103. public:
  104.     short                fNameWidth, fSizeWidth, fKindWidth;    //max #chars in name column
  105.     DAlnITitle( long id, DView* itsSuper, long pixwidth, long pixheight);
  106.     virtual void GetReadyToShow();
  107.     virtual void Click(Nlm_PoinT mouse);
  108.     virtual void DoubleClickAt(short row, short col);
  109.     virtual void SingleClickAt(short row, short col);
  110.     virtual void DrawCell(Nlm_RecT r, short row, short col);
  111. };
  112.  
  113. class DAlnIndex : public DTableView  
  114. {
  115. public:
  116.     DSeqList*     fSeqList; // NOTE: TSeqListDoc "owns" this list
  117.     DSeqDoc*        fDoc;         // our owner
  118.     short                fNameWidth, fSizeWidth, fKindWidth;    //max #chars in name column
  119.     
  120.     DAlnIndex( long id, DView* itsSuper, DSeqDoc* itsDocument, DSeqList* itsSeqList, long pixwidth, long pixheight);
  121.     virtual void Click(Nlm_PoinT mouse);
  122.     virtual void Drag(Nlm_PoinT mouse);
  123.     virtual void Hold(Nlm_PoinT mouse);
  124.     virtual void Release(Nlm_PoinT mouse);
  125.     virtual void DoubleClickAt(short row, short col);
  126.     virtual void SingleClickAt(short row, short col);
  127.     virtual void Scroll(Boolean vertical, DView* scrollee, short newval, short oldval);
  128.     virtual void GetReadyToShow();
  129.     virtual void Show();
  130.     virtual char* GetItemTitle(short item, char* title = NULL, size_t maxsize = 256);  
  131.     virtual void DrawCell(Nlm_RecT r, short row, short col);
  132. };
  133.  
  134. class DAlnHIndex : public DPanel  
  135. {
  136. public:
  137.     DSeqList*     fSeqList; // NOTE: TSeqListDoc "owns" this list
  138.     DSeqDoc*        fDoc;         // our owner
  139.     
  140.     DAlnHIndex( long id, DView* itsSuper, DSeqDoc* itsDocument, DSeqList* itsSeqList, long pixwidth, long pixheight);
  141.     virtual void Resize(DView* superview, Nlm_PoinT sizechange);
  142.     virtual void Drag(Nlm_PoinT mouse);
  143.     virtual void Hold(Nlm_PoinT mouse);
  144.     virtual void Release(Nlm_PoinT mouse);
  145.     virtual void Click(Nlm_PoinT mouse);
  146.     virtual void Scroll(Boolean vertical, DView* scrollee, short newval, short oldval);
  147.     virtual void Draw();
  148. };
  149.  
  150.         
  151.  
  152. class DSeqFormatPopup;
  153. class DAlnModePopup;
  154.  
  155. class    DSeqDoc : public DWindow, public DSaveHandler, public DPrintHandler
  156. {
  157. public:
  158.  
  159.     enum sdTasks  { 
  160.         kSeqdoc = 310, 
  161.         kSeqMenu, kInternetMenu, 
  162.         cSeqPrefs, cNewSeq, cEditSeq, cSaveSel,
  163.         cRevSeq,cCompSeq,cRevCompSeq,cDna2Rna,cRna2Dna,cToUpper,cToLower,cDegap,
  164.         cLockIndels,cUnlockIndels,cConsensus,cTranslate,
  165.         cPrettyPrint,cREMap,cDotPlot,cNAcodes, cAAcodes,
  166.         cFindORF,  
  167.         
  168.         cNCBIfetch, cNCBIblast, 
  169.         cEMBLfetch, cEMBLfasta, cEMBLblitz, cEMBLquicks,
  170.         cFHCRCfetch, cFHCRCblocks,
  171.         cGeneidSearch, cGenmarkSearch, cGrailSearch,cPythiaSearch, 
  172.  
  173.         kViewKindMenu, kViewByDefault,kViewByDate,kViewBySize,kViewByName,kViewByKind,kViewAsText,
  174.         kSeqMaskMenu, cMaskSelCommon,cMaskSelORF, cMaskSelAll,cMaskInvert,cMaskClear,
  175.         kModePopup,
  176.       kLockButHit, kColorButHit, kMonoButHit 
  177.         };
  178.  
  179.     static Boolean fgTestSeqFile, fgUseColor, fgLockText, fgStartDoc;
  180.     static short fgViewMode;
  181.     static Nlm_RecT    fgWinRect;
  182.     static void GetGlobals();
  183.     static void SaveGlobals();
  184.     static void NewSeqDoc();
  185.  
  186.      DSeqList    *    fSeqList;
  187.     DAlnView    *    fAlnView;
  188.     DAlnIndex     * fAlnIndex;
  189.     DAlnHIndex     * fAlnHIndex;
  190.     DAlnITitle    *    fAlnITitle;
  191.     DPrompt    *    fHeadline;                 //seqlist header
  192.     DSeqFormatPopup    * fFormatPop;             //seq output format
  193.     DAlnModePopup    * fModePop;
  194.     
  195.     long            fUpdateTime;            //time of last .showreverted/.updateFlds 
  196.     short            fInFormat;                //file input format 
  197.     Boolean        fSaveSelection, fUseColor;
  198.     DCheckBox * fColorCheck, * fLockCheck;
  199.     //DIconButton        * fLockButton, * fColorButton, * fMonoButton;
  200.     DWindow        *    fPrintDoc;
  201.     char            *    fDocTitle;
  202.     
  203.     DSeqDoc( long id, DSeqList* itsSeqList, char* name = NULL);
  204.     virtual ~DSeqDoc();
  205.  
  206.     static Boolean IsSeqFile(DFile* aFile);
  207.     static void SetUpMenu(short menuId, DMenu*& aMenu); // !! can't do virtual statics !!
  208.  
  209.     virtual void Save(DFile* f) { WriteTo( f); }  // revise for iostreams
  210.     virtual void WriteTo (DFile* aFile = NULL);            // revise for iostreams
  211.     virtual Boolean ReadFrom(DFile* aFile = NULL, Boolean append = true);    // revise for iostreams
  212.  
  213.     virtual void Open();
  214.     virtual void Open(DFile* aFile);
  215.     virtual void Close();
  216.     virtual void ResizeWin();
  217.     virtual void Activate();
  218.     virtual void Deactivate();
  219.     virtual void ProcessTask(DTask* theTask);
  220.     virtual Boolean IsMyTask(DTask* theTask);
  221.     virtual Boolean DoMenuTask(long tasknum, DTask* theTask);
  222.     virtual Boolean IsMyAction(DTaskMaster* action);
  223.     virtual void FreeData();
  224.     virtual char* GetTitle(char* title, ulong maxsize);
  225.  
  226.     virtual void MakeGlobalsCurrent();
  227.     virtual void SortView( DSeqList::Sorts sortorder);
  228.     virtual void ToTextDoc();
  229.  
  230. ////        
  231.     
  232.     virtual void AddSeqToList(DSequence* item);
  233.     virtual void AddNewSeqToList();
  234.     virtual Boolean IsEmpty() { 
  235.         if (fSeqList) return fSeqList->IsEmpty();
  236.         else return true;
  237.         }
  238.      
  239.     //virtual void DoSeqSelectCommand(); //override this to open sequences selected w/ dblclk
  240.     //virtual void ShowReverted(); // override 
  241.     //virtual void DoMakeViews(Boolean forPrinting); // override 
  242.                     
  243. ////
  244.  
  245.                 // revise for iostreams !?
  246.     virtual short SelectionToFile(Boolean AllatNoSelection, 
  247.                                                     char* aFileName, short seqFormat); //return # written 
  248.  
  249.     virtual void GetSelection(Boolean equalCount, Boolean allAtNoSelection,
  250.                                                         DSeqList*& aSeqList, long& start, long& nbases);
  251.     virtual void FirstSelection( DSequence*& aSeq, long& start, long& nbases);        
  252.     virtual void OpenSeqedWindow(DSequence* aSeq);
  253.     virtual void EditSeqs(); 
  254.     virtual void FindORF(); 
  255.     virtual void MakeConsensus(); 
  256.     virtual void MakeSeqPrint(Boolean doREMap);
  257.     virtual void MakeAlnPrint();
  258.     virtual void Print(); 
  259.     
  260.     //virtual void DoEvent(EventNumber eventNumber, TEventHandler source; TEvent event) // override 
  261.     //virtual void DoMenuCommand(short aCommandNumber); // override 
  262.     //virtual void DoSetupMenus(); // override 
  263.  
  264. private:          
  265.     void AddSeqAtToList( short aRow, long start1, long nbases1, 
  266.                                         DSeqList*& aSeqList, long& start, long& nbases);
  267. };
  268.  
  269.  
  270. extern char* gDefSeqName;
  271.  
  272.  
  273.  
  274.  
  275. #endif //_DSEQDOC_
  276.